<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Aria: Map File Format</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Aria
   &#160;<span id="projectnumber">2.9.4</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('MapFileFormat.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="headertitle">
<div class="title">Map File Format </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>ARIA's map file format is used to store data that defines a map of a space in which the robot can operate.</p>
<p>A map file can be loaded, accessed, and saved using an <a class="el" href="classArMap.html" title="A map of a two-dimensional space the robot can navigate within, and which can be updated via the Aria...">ArMap</a> object.</p>
<p>The robot map file is in ASCII text, and may be viewed or edited in any text editor. Map file names conventionally end in the suffix ".map".</p>
<p>A map file contains several types of information, including: </p><ul>
<li>
Header information which includes the boundaries of the map, various data counts, and the resolution (in mm) at which the map was made.  </li>
<li>
Optional metadata that can be used to define custom object types. (This is explained in greater detail below.)  </li>
<li>
Map objects, such as goals and forbidden lines.  </li>
<li>
Map data: lines and points (in mm).  </li>
</ul>
<p>A formal description of the map syntax follows in <a href="http://www.rfc-editor.org/rfc/rfc4234.txt">augmented Backus-Naur Format (ABNF)</a>. All blank lines in the map file should be ignored. As an exception to ABNF, literal strings given below <em>are</em> case-sensitive.</p>
<p>A map is an introductory line (e.g. "2D-Map") followed by the metadata section, followed by some number of data sections: </p>
<pre>
ARMAP                = (MapIntro NEWLINE) (MetadataSection) (*DataSection)
MapIntro             = "2D-Map" / "2D-Map-Ex" / "2D-Map-Ex&lt;2,3,4&gt;"
</pre> <p>Most of the features described below apply to all of the MapIntro values. Exceptions are noted in the feature descriptions. </p>
<p>The MetadataSection section provides information about the map data, adds objects (Cairns) and also provides storage of application-specific/custom information. </p>
<pre>
MetadataSection      = *MetadataLine
MetadataLine         = MDKey ":" *(WS MDVal) NEWLINE
MDKey                = StringID
MDVal                = Integer / Float / StringID / KeyValPair 
</pre><p>Most metadata lines fall into one of two categories: a simple list of numeric tokens, or a StringID followed by a list of either numeric tokens or a set of KeyValuePair tokens. </p>
<p>The DataSections contain data that was recorded with sensors (e.g. a Laser Rangefinder for the "DATA" section) and which represent more or less permanent, solid objects detectable by a robot's range sensors. (This data can be used for localization and path planning, for instance.) The DATA section is a collection of points detected by a high-resolution sensor like the LRF. LINES abstracts the world into a set of flat surfaces. </p>
<pre>
DataSection          = (LineIntro NEWLINE *LineLine) / (PointIntro NEWLINE *PointLine)
LineLine             = XPos WS YPos WS XPos WS YPos NEWLINE
PointLine            = XPos WS YPos NEWLINE
; If MapIntro is "2D-Map":
  LineIntro            = "LINES" 
  PointIntro           = "DATA"
; If MapIntro is "2D-Map-Ex" or "2D-Map-Ex2":
  LineIntro            = "LINES" / SensorName "_LINES"
  PointIntro           = "DATA" / SensorName "_DATA"
  SensorName           = StringID
</pre><p>MetadataSection Details</p>
<p>"Cairn" is a common instance of MDKey. A "Cairn" metadata entry looks like this: </p>
<pre>
MetaDataLine         =/ Cairn  NEWLINE
Cairn                = "Cairn:" WS CairnType WS XPos WS YPos WS Theta WS InternalName WS IconName WS Label [WS TypeSpecificData]
CairnType            = StringID
XPos                 = Integer
YPos                 = Integer
Theta                = Integer
InternalName         = QuotedString
IconName             = QuotedString
Label                = QuotedString
TypeSpecificData     = *(WS MDKey)
</pre><p>"MapInfo" is another common instance of MDKey. A "MapInfo" entry can describe custom map object types for your application beyond the usual Cairn types (see above). </p>
<pre>
MetaDataLine         =/ MapInfo NEWLINE
MapInfo              = "MapInfo:" WS MapInfoClass WS *(KeyValuePair)
MapInfoClass         = StringID
</pre><p>Data types:</p>
<pre>
KeyValPair           = (StringID "=" MDVal) /  QUOTE ALNUM "=" Text QUOTE
Integer              = ["-"] *1(DIGIT)
Float                = ["-"] *1(DIGIT | ".")
StringID             = *1 ALNUM     ; One or more alphanumeric characters (no whitespace)
QuotedText           = QUOTE Text QUOTE
Text                 = *(ALNUM / WS / PUNCTUATION)
DIGIT                = ("0"-"9")
ALPHA                = ("a"-"z" / "A"-"Z")
ALNUM                = ALPHA / DIGIT
WS                   = *(" ")       ; Any number of ASCII space characters (incl. 0)
QUOTE                = d34         ; ASCII double quote mark (")
NEWLINE              = d10         ; ASCII newline (<br />
)
PUNCTUATION          = d32-d47 / d58-d64 / d92-d96 / d123-d126
ANY                  = d32-d126   ; Any ASCII text
</pre><p>In addition to Cairn and MapInfo, other Common IDs for <em>MDKey</em> are: </p><dl>
<dt><code>Sources</code>  </dt>
<dd><p class="startdd">If multiple sensors were used to compile the points and lines in the DataSection, they are listed here. The first sensor is the default sensor; the data for it are not prefixed (i.e. plain <code>MinPos</code>, <code>MaxPos</code>, <code>DATA</code>, and <code>LINES</code>). The data for any additional sensors are prefixed by the sensor name (i.e. <em>SensorName</em><code>MinPos</code>, <em>SensorName</em><code>MaxPos</code>, <em>SensorName</em><code>_DATA</code>, <em>SensorName</em><code>_LINES</code>). (2D-Map-Ex and 2D-Map-Ex2 feature.) </p>
<p class="enddd"></p>
</dd>
<dt><code>MinPos</code> or <em>SensorName</em><code>MinPos</code> </dt>
<dd>"Minimum" value in DATA (defines opposite corner to MaxPos of a bounding box) </dd>
<dt><code>MaxPos</code> or <em>SensorName</em><code>MaxPos</code> </dt>
<dd>"Maximum" value in DATA (defines opposite corner to MinPos of a bounding box) </dd>
<dt><code>NumPoints</code> or <em>Sensor</em><code>NumPoints</code> </dt>
<dd>Number of entries in the DATA section. (Note, it is recommended that you do not rely on this value if possible; instead simply count the number of lines in the DATA section) </dd>
<dt><code>LineMinPos</code> or <em>SensorName</em><code>LineMinPos</code> </dt>
<dd>"Minimum" value in LINES (defines opposite corner to LineMaxPos of a bounding box) </dd>
<dt><code>LineMaxPos</code> or <em>SensorName</em><code>LineMaxPos</code> </dt>
<dd>"Maximum" value in LINES (defines opposite corner to LineMinPos of a bounding box) </dd>
<dt><code>NumLines</code> or <em>SensorName</em><code>NumLines</code> </dt>
<dd>Number of entries in the LINES section. (Note, it is recommended that you do not rely on this value if possible; instead simply count the number of lines in the LINES section) </dd>
<dt><code>Resolution</code> or <em>SensorName</em><code>Resolution</code> </dt>
<dd>Grid resolution of the DATA points and the LINE endpoint positions. </dd>
<dt><code>PointsAreSorted</code> or <em>SensorName</em><code>PointsAreSorted</code> </dt>
<dd><code>true</code> if the points DATA are sorted, <code>false</code> if not. </dd>
<dt><code>LinesAreSorted</code> or <em>SensorName</em><code>PointsAreSorted</code> </dt>
<dd><code>true</code> if the LINES data are sorted, <code>false</code> if not. </dd>
<dt><code>Display</code> or <em>SensorName</em><code>Display</code> </dt>
<dd>Text to display in user interface etc. when referring to this sensor data source. </dd>
<dt><code>OriginLatLonAlt</code> </dt>
<dd>Latitude, longitude and altitude of the map's center (0, 0) point in the WGS84 datum. (Only present in "outdoor" maps made for use with MOGS.) </dd>
<dt><code>Cairn</code> </dt>
<dd>Defines a special object in the map with semantic meaning. See below. </dd>
<dt><code>MapInfo</code> </dt>
<dd>Describes custom cairn types. See below. </dd>
<dt><code>CustomInfo</code> </dt>
<dd>Placeholder for custom application data which will be maintained if the map is edited by Mapper3 or MobilePlanner. (2D-Map-Ex2 feature.) </dd>
</dl>
<p>New values may be added in the future, or used only by some applications. </p>
<p>Common <em>CairnType</em> values are: </p><dl>
<dt><code>Goal</code> </dt>
<dd>A named goal. <em>Theta</em> should be ignored. The name of the goal is provided in <em>Label</em>. </dd>
<dt><code>GoalWithHeading</code> </dt>
<dd>A named goal. <em>Theta</em> indicates a final heading. The name of the goal is provided in <em>Label</em>. </dd>
<dt><code>RobotHome</code> </dt>
<dd>A possible starting position of a robot. </dd>
<dt><code>Dock</code> </dt>
<dd>A position and heading at which a docking maneuver may be initiated </dd>
<dt><code>ForbiddenLine</code> </dt>
<dd>Specifies a line that any automatic navigation procedure should avoid crossing. This Cairn type has the following <em>TypeSpecificData</em>, which defines the endpoints of the line: <pre>
TypeSpecificData     =/ ForbiddenLineData
ForbiddenLineData    =  XPos WS YPos WS XPos WS YPos
</pre> The normal Cairn pose is not used for <code>ForbiddenLine</code>.  </dd>
<dt><code>ForbiddenArea</code> </dt>
<dd>Specifies a rectangular area that any automatic navigation procedure should avoid entering. This Cairn type has the following <em>TypeSpecificData</em>, which defines the upper-left and lower-right opposing corners of the rectangle: <pre>
TypeSpecificData     =/ ForbiddenAreaData
ForbiddenAreaData    =  XPos WS YPos WS XPos WS YPos
</pre> The normal Cairn pose for <code>ForbiddenArea</code> defines an offset of the geometric center of the area, plus a rotation of the area. (Typically, <em>XPos</em> and <em>YPos</em> will always be <code>0</code> for <code>ForbiddenArea</code>, but <em>Theta</em> may be used to provide the rotation of the rectangular area).  </dd>
</dl>
<p>The <em>InternalName</em> and <em>IconName</em> tokens in <em>Cairn</em> data are not currently used. Typically, <em>InternalName</em> is simply an empty quoted string ("") and <em>IconName</em> is the placeholder value <code>"ICON"</code>. You should preserve them when reading and writing map files though, as they may be used in the future. </p>
<p>Note, It is be better to calculate maximum, minimum, and number of points or lines based on the data in the map, if possible, rather than relying on the metadata header. </p>
<p>So what the heck is a "cairn"? The word is from the Scottish Gaelic, Old Irish and Welsh "carn" and Middle English "carne". A cairn is a pile of stones, placed in the landscape as a memorial, navigation aid, or other marker. So we use it to indicate a semantically meaningful object placed at some point by the human mapmaker (rather than something detectable by the robot). </p>
<p>Currently used <em>MapInfoClass</em> keywords include: </p><dl>
<dt><code>GoalType</code> </dt>
<dd>define a custom goal subtype </dd>
<dt><code>DockType</code> </dt>
<dd>define a custom dock subtype </dd>
<dt><code>LocationType</code> </dt>
<dd>define a custom other generic poses on the map </dd>
<dt><code>BoundaryType</code> </dt>
<dd>define a custom line on the map </dd>
<dt><code>SectorType</code> </dt>
<dd>defines a custom rectangular area (which may be rotated) </dd>
</dl>
<p>The following ParamNames are valid for all <em>MapInfoClass</em> keywords: </p><dl>
<dt><code>Name=</code><em>Text</em> </dt>
<dd>Name of the type that is being defined. </dd>
<dt><code>Label=</code><em>Text</em> </dt>
<dd>Label that is displayed for the type in a GUI, etc. </dd>
<dt><code>Desc=</code><em>Text</em> </dt>
<dd>Longer description of the type that is displayed in a GUI, etc. </dd>
</dl>
<p>For more information about the use of <code>MapInfo</code> metadata, see the discussion above. </p>
<h1><a class="anchor" id="MapCustomObjects"></a>
Defining Custom Map Objects</h1>
<p>In addition to the standard map object types, is also possible to define additional types of objects in a map file using the "MapInfo" metadata section. For example, if you wished to program some special behavior that would only occur upon reaching certain goals, you could define a new goal type as follows: </p><pre>
      MapInfo: GoalType Name=SpecialGoal "Label=Special" "Desc=Doing special stuff" Heading=Required Shape=VBars "Color0=0xff0000"
   </pre><p> The new goal type will appear be available in Mapper3 and MobilePlanner in a drop-down menu. Instances in the map will also be displayed by MobileEyes.</p>
<p>Please read the following information carefully if you plan to use this feature.</p>
<p>Each MapInfo line is of the format: </p><pre>
         MapInfo: <em>Keyword</em> ([ParamName=ParamValue] )*  ; A keyword followed by a space-separated list of Key=Value or "Key=Value" tokens.
   </pre><p>The following values for <em>Keyword</em> are currently supported:</p><ul>
<li><code>GoalType</code> : defines a goal subtype</li>
<li><code>DockType</code> : defines a dock subtype</li>
<li><code>LocationType</code> : defines another kind of point in the map</li>
<li><code>BoundaryType</code> : defines a line object in the map</li>
<li><code>SectorType</code> : defines a rectangular area of some kind in the map (which may be rotated)</li>
<li><code>ArgDesc</code>: defines a parameter for the preceding type (2D-Map-Ex2 feature)</li>
</ul>
<p>The available parameters depend on the Keyword. Unless otherwise specified, parameters are optional.</p>
<p>If a parameter value contains a space, then both the parameter name and value must be enclosed within quotes. For example: </p><pre>
        "Label=Normal Goal"
   </pre><p> Neither the name nor the value can contain the special characters #, %, or ".</p>
<p>The following ParamNames are valid for all keywords except <code>ArgDesc</code>:</p><ul>
<li><code>Name=</code><em>String</em> : Text name of the type that is being defined. (Required.)</li>
<li><code>Label=</code><em>String</em> : Label that is displayed for the type in popup menus, etc.</li>
<li><code>Desc=</code><em>String</em> : Description of the type that is displayed in tool tips, etc.</li>
<li><code>Vis=[AlwaysOn|DefaultOn|DefaultOff|AlwaysOff]</code> : Specifies the visibility of the associated item type. The default is <code>DefaultOn</code>. (This parameter is currently primarily supported for <code>IsData=1</code> items only. See <code>BoundaryType</code>. In particular, if <code>DefaultOff</code> is specified for a non-data-item, there currently is no way in Mapper3, MobilePlanner or MobileEyes to subsequently show it.)</li>
</ul>
<p>For <code>GoalType</code>, <code>DockType</code>, and <code>LocationType</code>, the following ParamNames are also supported: </p><ul>
<li>
<code>Shape=</code>[Plain|Cross|HBars|Triangle|T|U|VBars|DockTarget|Cart] : Shape of the icon used to draw the pose. (The default is <code>Plain</code>.) <ul>
<li>
<code>Plain</code>: The default shape, a filled square </li>
<li>
<code>Cross</code>: A cross shape </li>
<li>
<code>HBars</code>: A square shape containing horizontal bars or stripes </li>
<li>
<code>Label</code>: A location that simply marks a text label expected to be used with <code>LocationType</code> and a fixed size font (<code>FtFix</code>, see below) </li>
<li>
<code>Triangle</code>: A Triangle </li>
<li>
<code>T</code>: A "T" shape </li>
<li>
<code>U</code>: A "U" shape </li>
<li>
<code>VBars</code>: A square shape containing vertical bars or stripes </li>
<li>
<code>DockTarget</code>: A special icon that resembles the physical dock / charger </li>
<li>
<code>Cart</code>: A special icon that resembles the physical cart </li>
</ul>
</li>
<li>
<code>Size=</code><em>Integer</em> : Width/height of the displayed icon in mm. </li>
<li>
<code>Color</code><em>0|1|2</em><code>=</code><em>ColorVal</em> : Colors with which to draw the icon. (In general, <code>Color0</code> is the primary icon color, <code>Color1</code> is the heading color, and <code>Color2</code> is the background/outline color.) <em>ColorVal</em> is a hexadecimal number starting with <code>0x</code>, and followed by two digits for the red component, two digits for green, and two digits for blue. For example, <code>0xff00ff</code>. </li>
<li>
<code>FtFix=</code><em>Integer</em> : A boolean. Set to 0 if the label font should be scaled when the map is zoomed (the default) set to 1 if the label should remain a fixed size. Note that the label font will only be scaled if the platform supports it. Also note that if this is set to 1, then the <code>FtSize</code> <em>must</em> also be specified. </li>
<li>
<code>FtSize=</code><em>Integer</em> : Point size of the displayed font. This will vary greatly depending on the value of <code>FtFix</code>. If the font is scaled, then the point size is expressed in mm and <em>must</em> be a multiple of 100. If the font is fixed, then the point size is in pixels. (If the font should be scaled, but the platform does not support it, then a best guess is made as to the desired size.) </li>
</ul>
<p>In addition, the following ParamName is supported only for <code>GoalType</code>s: </p><ul>
<li>
<code>Heading=[Required|Optional|Never]</code> : Whether a heading is required to be given with this goal, is optional, or is irrelevant. </li>
</ul>
<p>For <code>BoundaryType</code>, the following ParamNames are also supported: </p><ul>
<li>
<code>NameRequired=</code><em>0|1</em> : Whether the item must be named (1=true, 0=false) </li>
<li>
<code>Shape=[Plain|Measure|Dash] </code> Shape or decoration of the line. (The default is <code>Plain</code>.) </li>
<li>
<code>Color</code><em>0|1|2</em><code>=</code><em>ColorVal</em>: Color with which to draw the line. </li>
<li>
<code>IsData=</code><em>0|1</em> : Set to 1 to indicate that the item is inherently part of the map data. The default is 0 to indicate user-created items. </li>
<li>
<code>FtFix=</code><em>Integer</em> : A boolean. Set to 0 if the label font should be scaled when the map is zoomed (the default) set to 1 if the label should remain a fixed size. Note that the label font will only be scaled if the platform supports it. Also note that if this is set to 1, then the <code>FtSize</code> <em>must</em> also be specified. </li>
<li>
<code>FtSize=</code><em>Integer</em> : Point size of the displayed font. This will vary greatly depending on the value of <code>FtFix</code>. If the font is scaled, then the point size is expressed in mm and <em>must</em> be a multiple of 100. If the font is fixed, then the point size is in pixels. (If the font should be scaled, but the platform does not support it, then a best guess is made as to the desired size.) </li>
</ul>
<p>For <code>SectorType</code>, the following ParamNames are also supported: </p><ul>
<li>
<code>NameRequired=</code><em>0|1</em> : Whether the item must be named </li>
<li>
<code>Shape=[Plain| Arrow|FillArrow|GradArrow| Door| Elevator| Stairs| Circle|FillCircle| Cross|FillCross| Diamond|FillDiamond| Octagon|FillOctagon| PrefWayDriveOnLeft|FillPrefWayDriveOnLeft|GradPrefWayDriveOnLeft| PrefWayDriveOnRight|FillPrefWayDriveOnRight|GradPrefWayDriveOnRight| Star|FillStar| Triangle|FillTriangle| TwoWayDriveOnLeft|FillTwoWayDriveOnLeft|GradTwoWayDriveOnLeft| TwoWayDriveOnRight|FillTwoWayDriveOnRight|GradTwoWayDriveOnRight| Dash] </code> Shape of the icon used to draw the rectangle. The default is <code>Plain</code>. The <code>Dash</code> shape means that the rectangle is drawn with a dashed outline. The <code>Door</code>, <code>Elevator</code>, and <code>Stairs</code> shapes designate a special icon to be drawn in the rectangle. All other shapes refer to a repeating pattern of geometric shapes. If the <code>Fill</code> prefix is specified, then the geometric shape is filled with Color1. If the <code>Grad</code> prefix is specified (when available), then the geometric shape is filled with a gradient, shaded pattern from Color0 to Color1. </li>
<li>
<code>Color</code><em>0|1</em><code>=</code><em>ColorVal</em>: Colors with which to draw the rectangle. (In general, <code>Color0</code> is the primary rectangle color, <code>Color1</code> is the shape/icon color.) </li>
</ul>
<p><em>Important Note</em>: if a map defines special <code>GoalType</code> or <code>DockType</code> items, then it must define <b>all</b> possible Cairn types, including the default "Goal", "GoalWithHeading", and "Dock" types if you want those types to remain available.</p>
<p>The MapInfo ArgDesc lines may be used to define one or more configurable parameters for a custom map object type. (2D-Map-Ex2 feature.) The ArgDesc must appear after its parent type definition and can contain the following parameters: </p><ul>
<li>
<code>Name=</code><em>String</em> : The text name of the parameter being defined. This must be the first item in the line (after ArgDesc) and must be unique for the given parent. (Required) </li>
<li>
<code>Parent=</code><em>String</em> : The text name of the parent map object type (e.g. <code>SpecialGoal</code>, <code>RobotHome</code>, ...). This must be the second item in the line, immediately following the Name. (Required) </li>
<li>
<code>Priority=</code><em>Important|Normal|Detailed</em> : The priority of the parameter (Required) </li>
<li>
<code>Type=</code><em>int|double|string|bool</em> : The type of the parameter's value (Required) </li>
<li>
<code>Value=</code><em>String</em> : An optional initial value for the parameter (as appropriate for the type) </li>
<li>
<code>Min=</code><em>Number</em> : An optional minimum value for the parameter; valid only if Type=int or Type=double </li>
<li>
<code>Max=</code><em>Number</em> : An optional maximum value for the parameter; valid only if Type=int or Type=double </li>
<li>
<code>Display=</code><em>String</em> : An optional display hint that may be used by the client to improve display of the parameter. See <a class="el" href="classArConfigArg.html#a35025b88f24c2936354fdd0b51e6276a" title="Sets the display hint for this arg. ">ArConfigArg::setDisplayHint()</a> for a list of the currently supported display hints. </li>
</ul>
<p>If a cairn instance with parameters is defined in the map file, then the parameter values are stored in a special CairnInfo Metadatasection line. (2D-Map-Ex2 feature.) </p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
  </ul>
</div>
</body>
</html>
